home *** CD-ROM | disk | FTP | other *** search
/ Network Support Library / RoseWare - Network Support Library.iso / pressgen / array.txt < prev    next >
Text File  |  1993-06-24  |  32KB  |  811 lines

  1. Original posting - 02/21/92
  2. This posting -  6/18/93
  3.  
  4. This document is intended to address four issues.  
  5.  
  6. First, why the big excitement about disk arrays?  What do 
  7. you actually get when you spend gigabucks on one of these 
  8. boxes? 
  9.  
  10. Second, how can we put gigabytes of high performance, high 
  11. reliability, hot swappable disk in our LAN servers without 
  12. spending gigabucks?
  13.  
  14. Third, how can we be sure that disk duplexing/mirroring 
  15. really works, without jerking the power cord out of the disk 
  16. drive and risking its destruction?
  17.  
  18. The third issue is a necessary by-product of the second, 
  19. that is, if the drives are going to be hot swappable, we 
  20. should be able to swap them without crashing the server or 
  21. destroying the drives.  This gives us an easy way to test 
  22. the mirroring logic built into Netware.
  23.  
  24. Fourth, what do all these buzzwords mean?
  25.  
  26. Please address any comments to: Les Lovesee, 76702,1167
  27.  
  28.  
  29. WHAT IS A DRIVE ARRAY, AND WHY SHOULD I CARE?
  30.  
  31. Not surprisingly, there are a lot of vendors claiming to 
  32. offer a drive array solution.  Also not surprising is the 
  33. fact that many of these 'new' products are the same old 
  34. products with the words 'drive array' or 'RAID X' tacked 
  35. onto the product name.  Because of this, I'm going to start 
  36. with an overview of current array-like options.
  37.  
  38. At the top, we have the totally independent subsystems like 
  39. those available from Sanyo/Icon.  This unit has its own 
  40. processor(s) (both RISC-based and 680x0 versions, single and 
  41. dual processor systems available), lots of RAM (64mb or more 
  42. is common),  and supports RAID levels 0,1, and 5.  You are 
  43. not limited to a single RAID approach, some of the drives 
  44. can be configured as duplexed, some as RAID 5, etc.  It 
  45. connects to up to twelve hosts, these can be a mix of 
  46. NetWare servers, Vines servers, OS/2or Windows NT machines, 
  47. or  Unix hosts.  Connection is via independent SCSI-2 
  48. channels.  Total disk storage can exceed 140 gigabytes, 
  49. prices go well into the six figure range.
  50.  
  51. At the next level, we have subsystems which connect several 
  52. drives to a proprietary controller, this controller then 
  53. connects to a standard SCSI bus and appears as a single 
  54. drive.  A parity drive is used to achieve fault tolerance.  
  55. Most of these systems support hot swapping of drives, 
  56. although it is easier in some than in others.  This approach 
  57. has the advantage of low impact on the server, that is, a 
  58. proprietary host adapter isn't necessarily required, 
  59. although the vendor sometimes offers his own high 
  60. performance SCSI adapter.  The actual drives used in these 
  61. subsystems are sometimes ESDI, more often are SCSI.  Vendors 
  62. such as Ciprico and CORE offer systems that fall into this 
  63. category.
  64.  
  65. Another approach is to use a proprietary controller/adapter 
  66. and driver combination in the server.  Drives are pretty 
  67. much standard, fault tolerance is parity based.  Some of 
  68. these systems support hot swapping, some do not.  A good 
  69. example of this is Compaq's IDA.
  70.  
  71. A purely software-driven approach uses standard controllers 
  72. and drives, and depends on the server (or host) CPU to 
  73. perform the RAID operations. 
  74.  
  75. Finally, there are several vendors attempting to 'cash in' 
  76. on the drive array fad with various packaging approaches.  
  77. These systems don't offer anything really new in the way of 
  78. fault tolerance or performance, most of these are just the 
  79. same old drives and controllers in new sheet metal.
  80.  
  81. There a a couple of important points to recognize here.  
  82. First of all, duplexing is the Cadillac of fault tolerance.  
  83. I don't think anyone will argue that duplexing provides the 
  84. highest level of fault tolerance, and the best overall 
  85. performance.  Parity based systems offer few real advantages 
  86. (at this time) for the small to medium server - the biggest 
  87. theoretical advantage is cost, but many parity based arrays 
  88. actually cost much more than buying the raw drives and doing 
  89. your own duplexing, since duplexing comes 'free' with 
  90. NetWare.    
  91.  
  92. Another potential advantage of arrays is slot savings - 
  93. duplexing takes two slots, minimum, and if you start piling 
  94. up drives you can hit the SCSI limit of 7 devices per 
  95. channel pretty quickly, or in other words, if the biggest 
  96. drive you can put on your SCSI adapter is 2 gb, then you 
  97. can't really put more than 14 gb on a single SCSI channel, 
  98. which means you'd be hard pressed to put more than 28 gb of 
  99. duplexed disk in a single server (4 host adapters * 7 drives 
  100. of 2gb each).  Arrays generally don't suffer from this 
  101. problem, because the fact that there are multiple disk 
  102. drives in the box is hidden from the server - each array 
  103. usually appears as a single drive, regardless of how many 
  104. physical drives it contains.
  105.  
  106. "But what about speed?  Aren't arrays supposed to be 
  107. faster?"  Certainly, some array configurations offer 
  108. potential for increased thruput.  However, if the drive 
  109. array in question attaches to a standard SCSI host adapter, 
  110. it's still limited by the speed of the SCSI bus.  If you 
  111. take the same number of standard SCSI drives and attach them 
  112. to a good host adapter and set NetWare to span a single 
  113. volume over those drives, you'll probably get better 
  114. performance than you would get with a RAID 3 or 5 
  115. configuration.  On the other hand, if the array in question 
  116. uses some kind of proprietary channel or has 100mb of of 
  117. internal cache (like the Sanyo/Icon subsystems) it's gonna 
  118. blow the doors off of any combination of standard drives 
  119. attached via a standard SCSI channel.  It's also going to 
  120. COST a lot more <g>.  Then there is the data integrity issue 
  121. - some high-zoot database server programs are unable to 
  122. maintain transaction integrity when disk writes are cached.  
  123. NetWare provides a raw I/O mechanism to get around this 
  124. problem, but if the cache is hidden from NetWare out in the 
  125. RAID subsystem, then the DBMS has no way of dealing with it.
  126.  
  127. The general release of SFT III raises some additional 
  128. questions.  One might think that since you have to duplex 
  129. the entire server anyway, the question of whether to duplex 
  130. or 'raid' the drives is answered.  Instead, whole new 
  131. questions are raised.  For example, it is still possible to 
  132. attach RAID subsystems to each server, this gives you an 
  133. increased level of fault tolerance - i.e., the same drive 
  134. can fail in both subsystems and the server continues 
  135. operation.  
  136.  
  137. I question the wisdom of this, because it seems very 
  138. unlikely that the exact same drive in the mirror subsystem 
  139. will fail.  Rather, it seems much more likely that a second 
  140. drive in the same subsystem will.   For example,  compare 
  141. mirrored servers with four drives each to mirrored servers 
  142. with 5 drives each in a RAID 3 or 5 configuration.  If a 
  143. single drive on server A fails, there is only a 1 in 7 
  144. chance that the next drive to fail will be the drive 
  145. mirrored to the failed drive.   In the RAID scenario, there 
  146. is a 4 in 9 chance that the next drive to fail will bring 
  147. down the server A array.  This doesn't appear to be a 
  148. problem because the other server continues to operate, but 
  149. what happens when we bring the array back online?  THE 
  150. ENTIRE ARRAY HAS TO BE REMIRRORED!  This could take quite a 
  151. while, especially with RAID 5 since write operations are 
  152. significantly slower.  On the other hand, if RAID had not 
  153. been implimented, then only the drives which actually failed 
  154. would have to be remirrored.  
  155.  
  156. It's going to take someone with a background in statistical 
  157. analysis and a thorough understanding of SFT III to put this 
  158. question to rest.
  159.  
  160. Summary:  In my humble opinion, if you are building a new 
  161. server which isn't expected to grow beyond 5 gb or so 
  162. anytime soon, your best performance/fault tolerance combo is 
  163. to stick with NetWare duplexing and span the volumes over 
  164. multiple drives.  If you need (or soon expect to need) more 
  165. than 20 gb on a single server, you need to seriously 
  166. consider one of the pre-packaged array products.  Between 5 
  167. and 20 gb is sort of a grey area.  The best solution for you 
  168. is going to depend on your budget, your comfort level with 
  169. your integrator (or self confidence if you are 'rolling your 
  170. own'), and your performance and fault tolerance needs.   
  171.  
  172. HOW CAN I HOT SWAP MY DRIVES WITHOUT DESTROYING THEM OR MY 
  173. POCKETBOOK?, and DOES DUPLEXING REALLY WORK?
  174.  
  175. Disclaimer:  I am presenting this information as a public 
  176. service.  Since what I am presenting is a strategy more than 
  177. a product, and since I am receiving no compensation for 
  178. doing so, I cannot be held responsible for whatever you do 
  179. with this information.  I have tested this approach, and 
  180. feel confident that it works reliably, you should do the 
  181. same before you place any system you derive from this into 
  182. production status.
  183.  
  184. There are several requirements to be met if you want to hot 
  185. swap your drives.
  186.  
  187. 1. You must have some kind of redundancy, otherwise, what 
  188. good is a hot swap?
  189. Typically, this will be Netware mirroring or duplexing, or 
  190. some kind of software RAID scheme.
  191.  
  192. 2. You must have a way to power off each drive individually.  
  193. It must remain grounded.
  194. Some drives use the spindle motor as a generator to get the 
  195. heads parked, etc, after power loss.  This can result in 
  196. some weird voltages appearing on the SCSI bus data lines 
  197. while the drive is winding down IF you just jerk the power 
  198. connector out.  This is prevented if the drive remains 
  199. connected to system ground when power is removed.
  200.  
  201. 3. You must be able to physically remove the drive without 
  202. having to use a screwdriver.
  203. What happens if you drop a screw on the motherboard or onto 
  204. the logic board of another drive?  Poof!
  205.  
  206. 4. Your SCSI channel must remain terminated regardless of 
  207. which drive is removed.
  208. The other drives on the channel won't work otherwise.
  209.  
  210. 5. Your SCSI host adapter and driver must be able to deal 
  211. with a drive failure.
  212. Obviously, if the adapter/driver can't deal with a drive 
  213. failure in a graceful manner, duplexing isn't going to do 
  214. you any good anyway.
  215.  
  216. Item 1 is taken care of by Netware duplexing/mirroring.  
  217. Items 2 and 3 are easily handled by a device called a 
  218. 'DataPort', manufactured by Connector Resources Unlimited in 
  219. Milpitas, CA.  Item 4 is a standard SCSI terminator plug, it 
  220. connects to a standard SCSI cable connector (the one that 
  221. looks like a giant Centronics printer connector).  This part 
  222. is widely available.  (I have not yet located a SCSI 
  223. terminator which connects to a ribbon cable.  This would be 
  224. the ideal for smaller systems, so if anyone knows where to 
  225. get one of these, I'd appreciate an Email note.)
  226.  
  227. The 'DataPort' consists of two mating bracket components.  
  228. The outside component is made of metal, and screws into a 
  229. half height 5 1/4" drive opening.  It has a standard power 
  230. connector and SCSI ribbon cable connector on the back, just 
  231. like most SCSI drives.  On the right front is a key switch 
  232. which turns the power on and off, and locks the drive in 
  233. place.  The second part is made of plastic, and slides into 
  234. the metal part.  You install a 3 1/2" drive in the 
  235. removeable plastic bracket, plug in the provided connectors, 
  236. and you're in business.
  237.  
  238. What do you put this into?  If you're building a server, 
  239. look for a chassis with lots of exposed drive bays.  If you 
  240. need more drives than that, there are SCSI drive subsystem 
  241. boxes with standard connectors and power supplies available 
  242. from several sources (including Connector Resources, 
  243. Unlimited).  If you're on a budget, consider recycling old 
  244. XT cases - replace the power supplies with Turbo Cool units, 
  245. yank out the motherboards, presto, instant 4 drive subsystem 
  246. case.  You'll need a couple of brackets for mounting the 
  247. upper drive, I've purchased these from Jameco in the past, 
  248. I'm pretty sure that CRU has these as well.
  249.  
  250. How well does this actually work?  Well, I put two brackets 
  251. and drives in our office fileserver and duplexed them to 
  252. each other.  I then started a batch job on several 
  253. workstations copying files around on this volume.  I ran 
  254. this for thirty minutes.  While this was running, I followed 
  255. this procedure:
  256.  
  257. 1. Power off a drive, and remove it.
  258. 2. Wait for server to recognize drive has failed.
  259. 3. Reinsert drive, power up.
  260. 4. When drive is ready, reactivate it using the disk info 
  261. option of the monitor screen.
  262. 5. Netware automatically begins remirroring.
  263. 6. When Netware signals that remirroring is complete, and 
  264. drives are in sync, power down the other drive.
  265. 7. Repeat steps 2-6.
  266.  
  267. In my case, the test was even more brutal, as one drive was 
  268. SCSI, and the other IDE  (DataPort is available in both SCSI 
  269. and IDE flavors).  When the IDE drive was powered down, all 
  270. activity paused for the 5 seconds or so it took for the 
  271. server to recognize the drive failure.  (No, I'm not 
  272. advocating that you should duplex IDE and SCSI drives, I 
  273. just wanted to prove that it would work to my own 
  274. satisfaction.)
  275.  
  276.  
  277. DEFINITIONS
  278.  
  279. There are several concepts which are combined in different 
  280. ways by different vendors.  Each is described by a name, I 
  281. will define these terms as I understand them, but keep in 
  282. mind that not all vendors mean the same thing when they use 
  283. these terms, there is no ANSI standard <g>.
  284.  
  285. Asynchronous data transfer.  When used in the context of 
  286. disk subsystems, refers to a data transfer method which 
  287. requires an acknowledgement for each byte or word of data 
  288. transfered.   Standard SCSI uses asynchronous data transfer.
  289.  
  290. ATA.  See 'IDE".
  291.  
  292. Channel.  An intelligent path thru which data flows between 
  293. host RAM and some kind of I/O controller, independent of the 
  294. host CPU.  This is a mainframe concept which has migrated 
  295. down to the PC world.  Under NetWare, a channel is any kind 
  296. of disk controller or adapter, some are more intelligent 
  297. than others.
  298.  
  299. Controller.  The electronic component which translates 
  300. between the sequential bit stream used by the disk drive 
  301. read/write electronics, and the parallel digital data which 
  302. the host computer requires.  On IDE and modern SCSI drives, 
  303. the controller is built into the drive itself.  In the case 
  304. of MFM and ESDI drives in a PC, the controller is usually 
  305. part of the interface card which plugs into the PC's bus.  
  306. IDE and SCSI host adapters are often mistakenly called 
  307. controllers.
  308.  
  309. Disk Array / Drive Array.  Typically, any time several 
  310. drives are put into one box, it is called a Disk Array.   A 
  311. more correct definition would be any time several drives are 
  312. put into a box and attached to a controller or interface  
  313. which makes them 'look' like a single drive to the host .
  314.  
  315. Duplexing.  In this context, duplexing means keeping the 
  316. same data on two or more drives.  It differs from mirroring 
  317. in the NetWare environment by providing a unique channel for 
  318. each copy of the data.
  319.  
  320. ESDI - Enhanced Small Device Interface.  An improvement over 
  321. the original ST506 disk interface, allows for higher data 
  322. transfer rates.
  323.  
  324. Host.  This is the computer responsible for the data.  Dumb 
  325. terminal / timesharing users call their host a minicomputer 
  326. or mainframe.   Distributed processing / LAN users call 
  327. their host a fileserver or just a server.  Either way, it's 
  328. the place where the data resides in the enterprise.
  329.  
  330. Host Adapter.  This is a plug in card which provides an 
  331. interface between the host and some kind of external data 
  332. transfer bus.  The most common host adapters connect a host 
  333. bus to SCSI peripherals.  An IDE adapter is sometimes 
  334. refered to as a host adapter, although it is little more 
  335. than a bus buffer.
  336.  
  337. Hot Swap.  This refers to the ability to remove and insert 
  338. components (drives in this case) from a computer or 
  339. subsystem without interruption of service.  You've got to be 
  340. real careful about this one.  While most vendors mean that 
  341. you can replace a failed drive while the array is running, 
  342. at least one vendor requires you to to shut down the entire 
  343. array, but calls this a hot swap because the server is still 
  344. running!
  345.  
  346. IDE - Integrated Drive Electronics.  Also refered to as ATA 
  347. (AT Attachment).  This drive interface emulates a standard 
  348. IBM AT compatible MFM controller at the control register 
  349. level.  This means that drivers which work with a standard 
  350. AT disk controller will almost always work with an IDE 
  351. drive.  Since all the controller electronics have been moved 
  352. to the drive itself, only a very simple 'paddle board' with 
  353. bus drivers and minimal address decoding is required to 
  354. connect an IDE drive to the host bus.
  355.  
  356. Mirroring.  In the NetWare environment, this is the process 
  357. of keeping a second copy of the data on a second drive 
  358. attached to the same 'channel'.  It is a subset of 
  359. duplexing.
  360.  
  361. Paddle Board.  See IDE.
  362.  
  363. Parity.  Generally refers to any kind of error detection 
  364. and/or correction scheme, even if it is not really parity 
  365. based.  In the case of drive arrays, one drive is often 
  366. refered to as the parity drive, it contains data which can 
  367. be used to re-create data on any one of the other drives 
  368. given the continued proper operation of all the rest.  For 
  369. example, you might have a five drive array where one drive 
  370. is designated as the parity drive.  If any of the other four 
  371. drives fails, the data from the remaining three drives and 
  372. the parity drive can be used to re-create the data on the 
  373. lost drive.  Once the failed drive is replaced, the drive 
  374. array controller will rebuild that drive using the parity 
  375. drive and the other functioning drives.  Usually, some kind 
  376. of exclusive OR scheme is used, and there is always some 
  377. loss of performance associated with the rebuild process.  
  378. Also, if you have already lost one drive, and another fails 
  379. before the rebuild completes, you're hosed, unlike mirroring 
  380. or duplexing.
  381.  
  382. RAID - Redundant Arrays of Inexpensive Disks.  The theory is 
  383. that instead of buying gigantic, monolithic drives (SLEDs), 
  384. you combine multiple smaller drives to save money, increase 
  385. performance, and reliability.  In practice, many RAID 
  386. systems cost more and are not as fast as the SLEDs they 
  387. replace.  There are several types of RAID, each is 
  388. identified by number.
  389.  
  390. RAID 0 incorporates data striping only, this results in a 
  391. performance improvement, but no increase in reliability, in 
  392. fact, just the opposite.  If any drive in the RAID 0 array 
  393. fails, all data is lost.
  394.  
  395. RAID 1 is mirroring.  That is, each data drive is actually a 
  396. pair of drives containing the same data.  This increases 
  397. reliability, and can increase performance if seperate 
  398. channels are used for the primary and mirror drive.
  399.  
  400. RAID 2 uses Hamming codes for error detection/correction, 
  401. these are interleaved right in the bit stream.  This sounds 
  402. like a good idea, but Hamming codes are designed to not only 
  403. correct the bad data, but to also identify the failed bit.  
  404. Disk drives already have mechanisms for detecting that a 
  405. failure has occured, so this results in unnecessary 
  406. additional storage overhead.  
  407.  
  408. RAID 3 was initially the most common 'array' technique 
  409. (after mirroring), but has become less popular.  It uses an 
  410. even number of data drives (usually 4) and a dedicated 
  411. parity drive.  Each block that is to be written is divided 
  412. up among the data drives, a parity block is generated 
  413. (usually by XORing the data blocks) and all blocks including 
  414. the parity block are written out to the drives 
  415. simultaneously.  Spindle synchronization is usually used to 
  416. improve thruput.  This RAID flavor is good at reading and 
  417. writing LARGE amounts of data. 
  418.  
  419. RAID 4 supports an even or odd number of data drives.  
  420. Rather than dividing a block of data between all drives, it 
  421. writes individual blocks to individual drives.  Error 
  422. correction info is generated and stored on a dedicated 
  423. parity drive, although this allows independent parallel 
  424. reads of smaller chunks of data, it necessitates a 'read-
  425. modify-write' cycle to the parity drive for each data block 
  426. written.  This is the main drawback of this technique, the 
  427. primary advantage is the independence of the drives, 
  428. supposedly, interactive or transaction based applications 
  429. will run faster with RAID 4 than RAID 3.  
  430.  
  431. RAID 5 is probably the most popular technique in use today.  
  432. It is similar to RAID 4, but rather than using a dedicated 
  433. parity drive, the parity information is interleaved among 
  434. all the drives.  A 'read-modify-write' cycle is still 
  435. required for disk writes, but because of the way parity is 
  436. distributed, it is often possible to perform multiple 
  437. simultaneous writes.  For example, if you want to write 
  438. block 27 to drive 0, and block 500 to drive 2, it may work 
  439. out that the associated parity blocks are on drive 1 and 3, 
  440. this allows both writes to occur 'simultaneously' unlike 
  441. RAID 4 where all parity is on the parity drive creating a 
  442. write bottleneck. 
  443.  
  444. Once you get beyond the original six levels (0-5) you enter 
  445. a twilite zone where the definition of a particular RAID 
  446. level depends on who you are talking to.
  447.  
  448. RAID 6 has at least three definitions.  The first is an 
  449. attempt to solve the multi-drive failure problem.  All of 
  450. the RAID schemes which depend on parity rather than 
  451. redundancy are unable to deal with more than a single drive 
  452. failing.  In RAID 6, an extra copy of each parity block is 
  453. written to a different drive.  This improves fault tolerance 
  454. at the price of increased storage overhead.   The second 
  455. definition was coined by AST - it refers to their 
  456. combination of RAID 0 and 1.  Hmm, sounds like NetWare 
  457. spanning and mirroring to me.  Finally, I have read a couple 
  458. articles where a combination of caching with other RAID 
  459. levels is called RAID 6.
  460.  
  461. RAID 7 is used by two different vendors to denote different 
  462. products.  Pace Technologies, Inc., uses the term RAID 7 to 
  463. denote what is essentially a hot spare approach added on to 
  464. RAID 0, 3 or 5.  Another vendor,  Storage Computer Corp. 
  465. (StorComp) uses the term as the name of their patented disk 
  466. subsystem.  Here is what they say about it.  "RAID 7 
  467. incorporates the industry's first asynchronous hardware 
  468. design to move drive heads independently of each other, and 
  469. a real-time embedded operating system to control access to 
  470. the disk drives and data flow to the host interfaces.  As a 
  471. result, RAID 7 platforms exceed single-spindle performance 
  472. for all four basic disk metrics of small reads and writes, 
  473. and large reads and writes, in any combination." ( EDGE: 
  474. Work-Group Computing Report  Nov 13 1992 v3 n130 p31)   Hmm, 
  475. I though RAID 4 and 5 operated the drives independently of 
  476. each other, at least in read mode.  Another key feature 
  477. which is unique is the ability to use varying numbers of 
  478. drives of different sizes in the array.  
  479.  
  480. Scattering.  When spanning is used under Netware, blocks of 
  481. data are scattered among the drives which have been spanned 
  482. into a single volume.  This differs from striping in that 
  483. complete blocks are written to each drive, rather than 
  484. dividing one block up between several drives.  It's easier 
  485. to impliment from a hardware standpoint because it doesn't 
  486. require spindle synchronization, but may not provide all the 
  487. potential thruput gains of striping.  Note that it can 
  488. provide SOME performance advantages because each drive still 
  489. has its own controller, and can position its heads, read, 
  490. write, etc. independently from the other drives.
  491.  
  492. SCSI - Small Computer Systems Interface.  Pronounced 
  493. 'SCUZZY'.  This is an 8 bit data channel for connecting disk 
  494. drives, tape systems, and other block oriented devices to a 
  495. host system.  It supports a maximum of one 'master' (the 
  496. host) and seven 'slaves' (the peripherals).  In addition to 
  497. standard SCSI (SCSI-1), there is SCSI-2 which supports  
  498. synchronous data transfer at higher data rates, and SCSI-
  499. WIDE which expands the 8 bit data path to 16 or 32 bits.   
  500. The SCSI standard evolved from the old SASI (Shugart 
  501. Associates Standard Interface) bus.
  502.  
  503. Segment.  This is the smallest read/write unit supported by 
  504. some types of RAID.  It may be user configurable so best 
  505. performance for a particular application can be obtained.  A 
  506. segment has much in common with a Netware block.
  507.  
  508. SLED - Single Large Expensive Disk - opposite of RAID.
  509.  
  510. Spanning.  This is the process by which Netware allows you 
  511. to combine multiple physical drives into a single volume.  
  512. It is software driven rather than hardware driven, but 
  513. doesn't use much in the way of server resources.
  514.  
  515. Spindle Synchronization.  This means just what it says, that 
  516. is, keeping all the spindles on all the drives synchronized 
  517. so that sector zero goes by the heads on all the drives at 
  518. the same time.  This is done to improve thruput when data is 
  519. striped across multiple drives.  Not all drives have this 
  520. capability, and it usually requires some external hardware 
  521. even for drives which support it.   
  522.  
  523. Striping. (pronounced with a long I) This is the process of 
  524. dividing a single logical block into multiple physical 
  525. blocks on multiple disk drives.  The idea behind this is 
  526. increased thruput by dividing the data up among multiple 
  527. parallel data paths, the implication being that each drive 
  528. has its own controller which can operate in parallel with 
  529. the other drives controllers.  Often this is done as part of 
  530. a parity scheme.  Spindle synchronization is required for 
  531. true striping to work most efficiently.
  532.  
  533. Synchronous data transfer. When used in the context of disk 
  534. subsystems, refers to a data transfer method in which each 
  535. byte or word is 'clocked' from the sender to the receiver at 
  536. a fixed rate.  This is faster than asynchronous data 
  537. transfer because the time used to acknowledge each byte or 
  538. word is eliminated. 
  539.  
  540. XOR.  Short for eXclusive OR, this binary logic function is 
  541. sometimes used to generate parity or error correction data.   
  542. Arithmetically, it is an add without carry between bits.  
  543. This is the XOR truth table:
  544.  
  545. A in    B in    Out
  546. 0    0    0    
  547. 0    1    1
  548. 1    0    1
  549. 1    1    0
  550.  
  551. Here is an example of how XOR might be used to generate a 
  552. parity block, and recover from a lost block.
  553.  
  554. Assume four data drives and one parity drive.  Assume the 
  555. logical block size is 4k, this is the default for NetWare.
  556.  
  557. Divide the 4k block into four 1k segments.  Perform an XOR 
  558. across the segments, generating a parity block, or in other 
  559. words, XOR the first bit of each 1k block, producing the 
  560. first bit of the parity block, repeat for each bit of data.   
  561. When finished, write the four 1k data blocks out to the data 
  562. drives, and the 1k parity block out to the parity drive.
  563.  
  564. To reconstruct data from a failed drive, read the 1k data 
  565. blocks from the three remaining data drives, and the 1k 
  566. parity block from the parity drive.  XOR the first bit of 
  567. each 1k block including the parity block, the result is the 
  568. first bit of the missing block.  Repeat for each bit of the 
  569. missing block.
  570.  
  571. Here is an example using a 16 bit word to illustrate every 
  572. possible combination of 4 bits.  (thanks to my trusty HP16C 
  573. for helping me get it right)
  574.  
  575. Write original data            Read data missing drive 2
  576. 0 -    0101010101010101        0 -    0101010101010101
  577. 1 -     0011001100110011        1 -     0011001100110011
  578. 2 -     0000111100001111        P -     0110100110010110
  579. 3 -     0000000011111111        3 -    0000000011111111
  580.      -------------------------------            ----------
  581. ---------------------
  582. P -     0110100110010110        2-    0000111100001111
  583.  
  584. Read data missing drive 0        Read data missing drive 1
  585. P -    0110100110010110        0 -    0101010101010101    
  586. 1 -    0011001100110011        P -    0110100110010110
  587. 2 -    0000111100001111        2 -    0000111100001111
  588. 3 -    0000000011111111        3 -    0000000011111111
  589.     -------------------------------            ----------
  590. ---------------------
  591. 0 -    0101010101010101        1-    0011001100110011
  592.  
  593. It becomes obvious as you study this approach that it isn't 
  594. limited to four data drives and one parity drive.  In fact, 
  595. you could have a hundred data drives and one parity drive if 
  596. you desired, although you would have a much greater chance 
  597. of more than a single drive failing simultaneously with that 
  598. many drives, and if more than one drive fails, you're hosed.
  599.  
  600.  
  601. WHERE DO I BUY THIS STUFF?
  602.  
  603. Here are some companies which supply disk arrays, systems 
  604. with integrated disk arrays, or array building blocks.  I 
  605. have not included vendors who target only minicomputers or 
  606. mainframes.
  607.  
  608. Acer America Corp.
  609. 2641 Orchard Pkwy.
  610. San Jose, CA  95134
  611. 800-SEE-ACER; 408-432-6200
  612.  
  613. ADIC (Advanced Digital Information Corporation)
  614. 14737 NE 87th Street
  615. PO Box 2996
  616. Redmond, Washington  98073-2996
  617. 206-881-8004
  618.  
  619. AdStaR (unit of IBM)
  620. 5600 Cottle Rd.
  621. San Jose, CA  95193
  622. 800-772-2227
  623.  
  624. Advanced Logic Research, Inc. (ALR)
  625. 9401 Jeronimo Rd.
  626. Irvine, CA  92718
  627. 800-444-4257; 714-581-6770
  628.  
  629. Areal Technology, Inc.
  630. 2075 Zanker Rd.
  631. San Jose, CA  95131
  632. 408-436-6800
  633.  
  634. AST Research Inc.
  635. 16215 Alton Pkwy.
  636. Irvine, CA  92718
  637. 800-876-4AST; 714-727-4141
  638.  
  639. Astrix Computer Corp.
  640. 1546 Centre Pointe Dr.
  641. Milpitas, CA  95035
  642. 800-445-5486; 408-946-2883
  643.  
  644. Blue Lance
  645. 1700 West Loop South, Ste. 1100
  646. Houston, TX  77027
  647. 713-680-1187
  648.  
  649. Chantal Systems (division of BusLogic Inc.)
  650. 7220 Trade St., Ste. 115
  651. San Diego, CA  92121
  652. 619-621-2810
  653.  
  654. Ciprico, Inc.
  655. 2800 Campus Drive
  656. Plymouth, MN  55441
  657. 612-551-4002
  658.  
  659. COMPAQ Computer Corp.
  660. PO Box 692000
  661. Houston, TX  77269-2000
  662. 800-345-1518; 713-370-0670
  663.  
  664. Connector Resources Unlimited (doesn't sell arrays, but 
  665. sells the hardware I mentioned)
  666. 1005 Ames Avenue
  667. Milpitas, CA 95035
  668. 408-942-9077
  669.  
  670. CORE International
  671. 7171 N. Federal Hwy.
  672. Boca Raton, FL  33487
  673. 407-997-6055
  674.  
  675. Data General Corp.
  676. 4400 Computer Dr.
  677. Westboro, MA  01580
  678. 800-328-2436; 508-366-8911
  679.  
  680. Dell Computer Corp.
  681. 9505 Arboretum Blvd.
  682. Austin, TX  78759-7299
  683. 800-289-3355; 512-338-4400
  684.  
  685. Distributed Processing Technology (DPT)
  686. 140 Candace Dr.
  687. Maitland, FL  32751
  688. 407-830-5522
  689.  
  690. Dynatek Automation Systems, Inc.
  691. 15 Tangiers Rd.
  692. Toronto, ON, CD  M3J 2B1
  693. 416-636-3000
  694.  
  695. ECCS, Inc.
  696. One Sheila Dr., Bldg. 6A
  697. Tinton Falls, NJ  07724
  698. 800-322-7462; 908-747-6995
  699.  
  700. Everex Systems, Inc.
  701. 48431 Milmont Dr.
  702. Fremont, CA  94538
  703. 800-821-0806; 510-498-1111
  704.  
  705. Extended Systems
  706. PO Box 4937, 6123 N. Meeker Ave.
  707. Boise, ID  83704
  708. 800-235-7576; 208-322-7575
  709.  
  710. Hewlett-Packard Inc.
  711. 3000 Hanover St.
  712. Palo Alto, CA  94304
  713. 800-752-0900; 415-857-1501
  714.  
  715. Integra Technologies, Inc.
  716. 3130 De La Cruz Blvd., Ste. 200
  717. Santa Clara, CA  95054
  718. 408-980-1371
  719.  
  720. Legacy Storage Systems, Inc.
  721. 200 Butterfield Dr., Ste. B
  722. Ashland, MA  01721
  723. 508-881-6442
  724.  
  725. Micropolis Corp.
  726. 21211 Nordhoff St.
  727. Chatsworth, CA  91311
  728. 800-395-3748; 818-709-3300
  729.  
  730. Morton Management, Inc.
  731. 12079 Tech Road
  732. Silver Spring, MD 20904
  733. 800-548-5744; 301-622-5600
  734.  
  735. NCR Corp.
  736. 1700 S. Patterson Blvd.
  737. Dayton, OH  45479
  738. 800-225-5627; 513-445-2078
  739.  
  740. Northgate Computer Systems, Inc.
  741. PO Box 59080
  742. Minneapolis, MN  55459-0080
  743. 800-548-1993; 612-943-8181
  744.  
  745. Pace Technologies, Inc.
  746. Jacksonville, FL
  747. (904) 260-6260.
  748.  
  749. Pacific Micro Data, Inc.
  750. 3002 Dow Avenue
  751. Building 140
  752. Tustin, CA  92680
  753. 714-838-8900
  754.  
  755. SANYO/ICON International, Inc.
  756. 18301 Von Karman
  757. Suite 750
  758. Irvine, CA  92715
  759. 800-487-2696
  760.  
  761. Storage Computer Corp
  762. 11 Riverside St. 
  763. Nashua, NH 03062
  764. (603) 880-3005
  765.  
  766. Storage Concepts, Inc.
  767. 1622 Deere Ave.
  768. Irvine, CA  92714
  769. 800-525-9217; 714-852-8511
  770.  
  771. Storage Dimensions
  772. 1656 McCarthy Blvd.
  773. Milpitas, CA 95035
  774. 408-954-0710
  775.  
  776. Storage Solutions, Inc.
  777. 417 Shippan Ave.
  778. Stamford, CT  06902
  779. 800-745-5508; 203-969-6047
  780.  
  781. Tangent Computer, Inc.
  782. 197 Airport Blvd.
  783. Burlingame, CA  94010
  784. 800-800-6060; 415-342-9388
  785.  
  786. Texas Microsystems, Inc.
  787. 10618 Rockley Rd.
  788. Houston, TX  77099
  789. 800-627-8700; 713-933-8050
  790.  
  791. Ultrastor Corporation
  792. 15 Hammond
  793. Suite 310
  794. Irvine, CA 92718
  795. 714-581-4100
  796.  
  797. Unbound, Inc.
  798. 17951 Lyons Circle
  799. Huntington Beach, CA  92647
  800. 800-UNBOUND; 714-843-1895
  801.  
  802. Vermont Research
  803. Precision Park
  804. North Springfield, VT  05150
  805. 800-225-9621; 802-886-2256
  806.  
  807. Zenith Data Systems Corp. (a Groupe Bull Co.)
  808. 2150 E. Lake Cook Rd.
  809. Buffalo Grove, IL  60089
  810. 800-553-0331; 708-808-5000
  811.